Nginx

推荐列表 站点导航

当前位置:首页 > 服务器技术 > Nginx >

nginx用正则表达式实现泛域名自动匹配目录的方法

来源:网络整理  作者:fen  发布时间:2020-12-25 06:09
这篇文章主要介绍了nginx用正则表达式实现泛域名自动匹配目录的相关知识,本文给大家介绍的非常详细,对大家的学...

nginx用正则表达式实现泛域名自动匹配目录

用nginx可以实现虚拟主机的功能,可以绑定多个网址。
通常主域名都是写死在配置里面的,所以要增加匹配时,需要手动添加。

基本写法

?

1

2

3

4

5

6

7

8

9

10

11

12

13

 

最基本的写法是server{

listen 80;

server_name ;

root /html/a;

}

 

server{

listen 80;

server_name ;

root /html/b;

}

 

正则式写法

域名绑定后,自动匹配到相应的目录中,不需要一个一个域名去写配置。
匹配目录为:html/域名/二级域名,例如会匹配到baidu.com/www目录下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 

server {

 listen 80;

 # $subdomain 将匹配到二级域名级以上

 # $domain 将匹配到一级域名

 # $tld 将匹配到根节点名

 server_name ~^((?<subdomain>.IT之家)\.)?(?<domain>[^.]+)\.(?<tld>[a-zA-Z]+)$;

 

 #如果没有$subdomain,则跳转到www

 if ($subdomain = "") {

  # set $subdomain "_";

  set $subdomain "www";

  return 301 $scheme://www.$domain.$tld$request_uri;

 }

 

 root /usr/share/nginx/html/${domain}.${tld}/${subdomain};

}

 

其他

nginx 的匹配顺序,搜索一下有很多文章,我就不详细说了。
因为正则表达式的匹配优先级最低,只有当其他都匹配不到时才会进行正则表达式的匹配,所以不用担心影响其他的精确匹配。

一般人不会有那么多的域名要匹配,相反,是要屏蔽掉一些恶意的域名指向。

但是测试的时候,为了不影响正在运行的网页,可以在hosts中添中一条ip 域名记录,用不存在的域名来测试,这时候就比较有用了。

总结

到此这篇关于nginx用正则表达式实现泛域名自动匹配目录的文章就介绍到这了,更多相关nginx正则表达式泛域名匹配目录内容请搜索聚合云库文库以前的文章或继续浏览下面的相关文章希望大家以后多多支持聚合云库文库!

原文链接:https://blog.csdn.net/lionking1990/article/details/106021001

相关热词: 方法

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/server/nginx/8804.shtml

最新文章
并且强制用 HTTPS 访问 fa 并且强制用 HTTPS 访问 fa

时间:2021-01-14

可以控制访问量 可以控制访问量

时间:2021-01-14

(通配符在前) ③server (通配符在前) ③server

时间:2021-01-14

Nginx环境下WordPress的多站点 Nginx环境下WordPress的多站点

时间:2021-01-05

nginx keepalive的具体使用 nginx keepalive的具体使用

时间:2021-01-05

Nginx的信号控制 Nginx的信号控制

时间:2021-01-05

win10上安装nginx的方法步骤 win10上安装nginx的方法步骤

时间:2020-12-29

linux下 nginx监控问题 linux下 nginx监控问题

时间:2020-12-29

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

nginx用正则表达式实现泛域名自动匹配目录的方法

2020-12-25 编辑:fen

nginx用正则表达式实现泛域名自动匹配目录

用nginx可以实现虚拟主机的功能,可以绑定多个网址。
通常主域名都是写死在配置里面的,所以要增加匹配时,需要手动添加。

基本写法

?

1

2

3

4

5

6

7

8

9

10

11

12

13

 

最基本的写法是server{

listen 80;

server_name ;

root /html/a;

}

 

server{

listen 80;

server_name ;

root /html/b;

}

 

正则式写法

域名绑定后,自动匹配到相应的目录中,不需要一个一个域名去写配置。
匹配目录为:html/域名/二级域名,例如会匹配到baidu.com/www目录下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 

server {

 listen 80;

 # $subdomain 将匹配到二级域名级以上

 # $domain 将匹配到一级域名

 # $tld 将匹配到根节点名

 server_name ~^((?<subdomain>.IT之家)\.)?(?<domain>[^.]+)\.(?<tld>[a-zA-Z]+)$;

 

 #如果没有$subdomain,则跳转到www

 if ($subdomain = "") {

  # set $subdomain "_";

  set $subdomain "www";

  return 301 $scheme://www.$domain.$tld$request_uri;

 }

 

 root /usr/share/nginx/html/${domain}.${tld}/${subdomain};

}

 

其他

nginx 的匹配顺序,搜索一下有很多文章,我就不详细说了。
因为正则表达式的匹配优先级最低,只有当其他都匹配不到时才会进行正则表达式的匹配,所以不用担心影响其他的精确匹配。

一般人不会有那么多的域名要匹配,相反,是要屏蔽掉一些恶意的域名指向。

但是测试的时候,为了不影响正在运行的网页,可以在hosts中添中一条ip 域名记录,用不存在的域名来测试,这时候就比较有用了。

总结

到此这篇关于nginx用正则表达式实现泛域名自动匹配目录的文章就介绍到这了,更多相关nginx正则表达式泛域名匹配目录内容请搜索聚合云库文库以前的文章或继续浏览下面的相关文章希望大家以后多多支持聚合云库文库!

原文链接:https://blog.csdn.net/lionking1990/article/details/106021001

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/server/nginx/8804.shtml

相关文章

风云图片

推荐阅读

返回Nginx频道首页